<html>
	<head>
		<meta charset="utf-8"></meta>
		<title>BApplication</title>
		<link href="./style.css" rel="stylesheet" type="text/css"/>
	</head>
	<body>
		<div class="class" name="BApplication">
			<h1>BApplication</h1>
			<p id="resume">BApplication使应用程序的初始化，开启主循环。<a href="#desc">详细</a></p><h2>public</h2>
			<table id="public">
				<tr><td align="right"/><td><a href="#BApplication(int,char**)">BApplication</a>(int argc = 0, char** argv = 0);</td></tr>
				<tr><td align="right"/><td><a href="#~BApplication()">~BApplication</a>();</td></tr>
				<tr><td align="right">static int </td><td><a href="#argc()">argc</a>();</td></tr>
				<tr><td align="right">static const BString&amp; </td><td><a href="#argv(int)">argv</a>(int index);</td></tr>
				<tr><td align="right">static void </td><td><a href="#setFrequency(int)">setFrequency</a>(int frequency);</td></tr>
				<tr><td align="right">static int </td><td><a href="#frequency()">frequency</a>();</td></tr>
				<tr><td align="right">static int </td><td><a href="#realFrequency()">realFrequency</a>();</td></tr>
				<tr><td align="right">static void </td><td><a href="#setClickInterval(BReal)">setClickInterval</a>(BReal clickInterval);</td></tr>
				<tr><td align="right">static BReal </td><td><a href="#clickInterval()">clickInterval</a>();</td></tr>
				<tr><td align="right">static void </td><td><a href="#setTipsDelay(BReal)">setTipsDelay</a>(BReal tipsDelay);</td></tr>
				<tr><td align="right">static BReal </td><td><a href="#tipsDelay()">tipsDelay</a>();</td></tr>
				<tr><td align="right">static void </td><td><a href="#exit(int)">exit</a>(int code = 0);</td></tr>
				<tr><td align="right">static int </td><td><a href="#code()">code</a>();</td></tr>
				<tr><td align="right">static int </td><td><a href="#execute()">execute</a>();</td></tr>
				<tr><td align="right">static const BString&amp; </td><td><a href="#appPath()">appPath</a>();</td></tr>
				<tr><td align="right">static const BString&amp; </td><td><a href="#libPath()">libPath</a>();</td></tr>
				<tr><td align="right">static const BString&amp; </td><td><a href="#homePath()">homePath</a>();</td></tr>
				<tr><td align="right">static BString </td><td><a href="#currentPath()">currentPath</a>();</td></tr>
				<tr><td align="right">static bool </td><td><a href="#currentPath(BString&)">currentPath</a>(BString&amp; path);</td></tr>
				<tr><td align="right">static bool </td><td><a href="#setCurrentPath(const BString&)">setCurrentPath</a>(const BString&amp; path);</td></tr>
				<tr><td align="right">static void </td><td><a href="#setFont(const BString&,int)">setFont</a>(const BString&amp; family, int size = 20);</td></tr>
				<tr><td align="right">static void </td><td><a href="#setFont(BFont*)">setFont</a>(BFont* font);</td></tr>
				<tr><td align="right">static const BFont* </td><td><a href="#font()">font</a>();</td></tr>
				<tr><td align="right">static void </td><td><a href="#setStyle(BStyle*)">setStyle</a>(BStyle* style);</td></tr>
				<tr><td align="right">static BStyle* </td><td><a href="#style()">style</a>();</td></tr>
				<tr><td align="right">static void </td><td><a href="#setStyleSheet(const BString&)">setStyleSheet</a>(const BString&amp; sheet);</td></tr>
				<tr><td align="right">static void </td><td><a href="#addStyleSheet(const BString&)">addStyleSheet</a>(const BString&amp; sheet);</td></tr>
				<tr><td align="right">static void </td><td><a href="#resetStyles(BWidget*)">resetStyles</a>(BWidget* widget = 0);</td></tr>
				<tr><td align="right">static void </td><td><a href="#cleanTranslation(BWidget*)">cleanTranslation</a>(BWidget* widget = 0);</td></tr>
				<tr><td align="right">static bool </td><td><a href="#setProperty(const char*, const BValue&)">setProperty</a>(const char* name, const BValue&amp; value);</td></tr>
				<tr><td align="right">static const BValue&amp; </td><td><a href="#property(const char*)">property</a>(const char* name);</td></tr>
				<tr><td align="right">static bool </td><td><a href="#setProperty(const BString&, const BValue&)">setProperty</a>(const BString&amp; name, const BValue&amp; value);</td></tr>
				<tr><td align="right">static const BValue&amp; </td><td><a href="#property(const BString&)">property</a>(const BString&amp; name);</td></tr>
				<tr><td align="right">static int </td><td><a href="#socketCount()">socketCount</a>();</td></tr>
				<tr><td align="right">static BSocket* </td><td><a href="#socket(int)">socket</a>(int index);</td></tr>
				<tr><td align="right">static int </td><td><a href="#sceneCount()">sceneCount</a>();</td></tr>
				<tr><td align="right">static BScene* </td><td><a href="#scene(int)">scene</a>(int index);</td></tr>
				<tr><td align="right">static int </td><td><a href="#movieCount()">movieCount</a>();</td></tr>
				<tr><td align="right">static BMovie* </td><td><a href="#movie(int)">movie</a>(int index);</td></tr>
				<tr><td align="right">static int </td><td><a href="#shortcutCount()">shortcutCount</a>();</td></tr>
				<tr><td align="right">static BShortcut* </td><td><a href="#shortcut(int)">shortcut</a>(int index);</td></tr>
				<tr><td align="right">static int </td><td><a href="#threadCount()">threadCount</a>();</td></tr>
				<tr><td align="right">static BThread* </td><td><a href="#thread(int)">thread</a>(int index = 0);</td></tr>
				<tr><td align="right">static void </td><td><a href="#addFontPath(const BString&)">addFontPath</a>(const BString&amp; fontPath);</td></tr>
				<tr><td align="right">static void </td><td><a href="#removeFontPath(const BString&)">removeFontPath</a>(const BString&amp; fontPath);</td></tr>
				<tr><td align="right">static void </td><td><a href="#addPluginPath(const BString&)">addPluginPath</a>(const BString&amp; pluginPath);</td></tr>
				<tr><td align="right">static void </td><td><a href="#removePluginPath(const BString&)">removePluginPath</a>(const BString&amp; pluginPath);</td></tr>
				<tr><td align="right">static int </td><td><a href="#fontPathCount()">fontPathCount</a>();</td></tr>
				<tr><td align="right">static const BString&amp; </td><td><a href="#fontPath(int)">fontPath</a>(int index);</td></tr>
				<tr><td align="right">static int </td><td><a href="#pluginPathCount()">pluginPathCount</a>();</td></tr>
				<tr><td align="right">static const BString&amp; </td><td><a href="#pluginPath(int)">pluginPath</a>(int index);</td></tr>
				<tr><td align="right">static BWidget* </td><td><a href="#activeWindow()">activeWindow</a>();</td></tr>
				<tr><td align="right">static BWidget* </td><td><a href="#hoveredWidget()">hoveredWidget</a>();</td></tr>
				<tr><td align="right">static BWidget* </td><td><a href="#focusedWidget()">focusedWidget</a>();</td></tr>
				<tr><td align="right">static BWidget* </td><td><a href="#activeModalWidget()">activeModalWidget</a>();</td></tr>
				<tr><td align="right">static BWidget* </td><td><a href="#activePopupWidget()">activePopupWidget</a>();</td></tr>
			</table>
			<h2>public</h2>
			<table id="public">
				<tr><td align="right">inline </td><td><a href="#AutoWorkPath(const BString&)">AutoWorkPath</a>(const BString&amp; path);</td></tr>
				<tr><td align="right">inline </td><td><a href="#~AutoWorkPath()">~AutoWorkPath</a>();</td></tr>
				<tr><td align="right">inline bool </td><td><a href="#failed() const">failed</a>() const;</td></tr>
			</table>
			<div id="desc">
				<h2>详细介绍：</h2>
				<p>BApplication使应用程序的初始化，开启主循环。其初始化很多重要的资源，比如环境变量，样式，文件路径等等。由于框架运行必须基于这此初始数据，应该在开始处创建BApplication对象。</p><p>实例化BApplication时可以传递进参数（int argc, char** argv)这样初始化会更全面。</p><p>鼠标点击事件需要判断按下下抬起的时间间隔小于指定值，这个值默认为0.5秒。使用方法setClickInterval()设置点击间隔时间值。</p><p>提示文本的显示通常会在悬停之后一段时间才弹出，这个延迟时间可以使用方法setTipsDelay()进行设置。默认的延迟时间值为1秒。</p>
			</div>
			<h2 id="docs">成员文档：</h2>
			<div id="BApplication(int,char**)">
				<h3>BApplication(int argc = 0, char** argv = 0);</h3>
				<p>初始化BApplication对象，参数是程序主入口的参数，建议使用原参数值，因为它将其于此参数初始此应用的基础数据，如appPath。</p>
			</div>
			<div id="~BApplication()">
				<h3>~BApplication();</h3>
				<p>结束BApplication对象，释放全局资源。有时可以在此实现程序的关闭时保存等功能。</p>
			</div>
			<div id="argc()">
				<h3>static int argc();</h3>
				<p>取得参数列表的个数，此值与程序入口函数的参数个数相同。</p>
			</div>
			<div id="argv(int)">
				<h3>static const BString&amp; argv(int index);</h3>
				<p>获得index位置的参数字符串，注意这里是经过处理的utf8字符串。</p>
			</div>
			<div id="setFrequency(int)">
				<h3>static void setFrequency(int frequency);</h3>
				<p>设置程序帧率，所谓帧率是指每秒钟程序循环次数，默认值为30帧每秒。有时程序每个运行周期工作内容每多导致运行时间超过指定的时间间隔，那么实现帧率会少于设置的值。</p>
			</div>
			<div id="frequency()">
				<h3>static int frequency();</h3>
				<p>获取程序设置的帧率值，此值与实际帧率的值不一定相等，实现帧率可能会小于设置帧率。</p>
			</div>
			<div id="realFrequency()">
				<h3>static int realFrequency();</h3>
				<p>获取程序实际运行的帧率值，此值与实际帧率的值不一定相等，实现帧率可能会小于设置帧率。</p>
			</div>
			<div id="setClickInterval(BReal)">
				<h3>static void setClickInterval(BReal clickInterval);</h3>
				<p>设置单击判定的时间间隔。</p>
			</div>
			<div id="clickInterval()">
				<h3>static BReal clickInterval();</h3>
				<p>获得单击判定的时间间隔。</p>
			</div>
			<div id="setTipsDelay(BReal)">
				<h3>static void setTipsDelay(BReal tipsDelay);</h3>
				<p>设置提示文本的弹出时间延迟值。</p>
			</div>
			<div id="tipsDelay()">
				<h3>static BReal tipsDelay();</h3>
				<p>获得提示文本的弹出时间延迟值。</p>
			</div>
			<div id="exit(int)">
				<h3>static void exit(int code = 0);</h3>
				<p>直接即出程序运行，根窗口关闭时如果它是第一个窗口，那么此方法会被调用退出运行。</p>
			</div>
			<div id="code()">
				<h3>static int code();</h3>
				<p>获取程序调用exit(code)退出时指定的即出码。</p>
			</div>
			<div id="execute()">
				<h3>static int execute();</h3>
				<p>开始运行主循环，直到exit(code)方法被调用。此方法结束后，可以重新调用此方法再次运行主循环。</p>
			</div>
			<div id="appPath()">
				<h3>static const BString&amp; appPath();</h3>
				<p>获得当前程序的程序所在目录。</p>
			</div>
			<div id="libPath()">
				<h3>static const BString&amp; libPath();</h3>
				<p>获得BWE库安装路径。</p>
			</div>
			<div id="homePath()">
				<h3>static const BString&amp; homePath();</h3>
				<p>获得当前电脑用户目录。</p>
			</div>
			<div id="currentPath()">
				<h3>static BString currentPath();</h3>
				<p>获得当前程序工作目录。</p>
			</div>
			<div id="currentPath(BString&)">
				<h3>static bool currentPath(BString&amp; path);</h3>
				<p>莉当前程序 工作目录，较上面的方法，此方法不需要生成和释放临时字符串，效率更高些。</p>
			</div>
			<div id="setCurrentPath(const BString&)">
				<h3>static bool setCurrentPath(const BString&amp; path);</h3>
				<p>设置当前工作目录，建议使用AutoWorkPath类进行路径的进入和离开，使用代码更简洁。</p><pre>AutoWorkPath workpath("/home/xxx");//进行入指定的目录，析构时离开并恢复到之前的目录。</pre>
			</div>
			<div id="setFont(const BString&,int)">
				<h3>static void setFont(const BString&amp; family, int size = 20);</h3>
				<p>设置全局字体。此字体优级最低，作为全局样式表中字体的替补。family指定字体家族名称，如"times"。size指定字体的大小，此大小是实际字符图像的生成参考值。</p>
			</div>
			<div id="setFont(BFont*)">
				<h3>static void setFont(BFont* font);</h3>
				<p>设置全局字体。此字体优级最低，作为全局样式表中字体的替补。</p>
			</div>
			<div id="font()">
				<h3>static const BFont* font();</h3>
				<p>取得全局字体。</p>
			</div>
			<div id="setStyle(BStyle*)">
				<h3>static void setStyle(BStyle* style);</h3>
				<p>设置全局样式表对象，此样式级别低于控件自身的样式，更低于绘制过程中对绘制器（BPainter）设置的样式。</p>
			</div>
			<div id="style()">
				<h3>static BStyle* style();</h3>
				<p>获取全局样式表对象。</p>
			</div>
			<div id="setStyleSheet(const BString&)">
				<h3>static void setStyleSheet(const BString&amp; sheet);</h3>
				<p>设置全局样式表对象，此样式级别低于控件自身的样式，更低于绘制过程中对绘制器（BPainter）设置的样式。sheet可以是样式表文件路径，也可以是样式表文本数据。此方法会重置之前的样式表内容，重新初始构建样式表。</p>
			</div>
			<div id="addStyleSheet(const BString&)">
				<h3>static void addStyleSheet(const BString&amp; sheet);</h3>
				<p>添加全局样式表对象，此样式级别低于控件自身的样式，更低于绘制过程中对绘制器（BPainter）设置的样式。sheet可以是样式表文件路径，也可以是样式表文本数据。此方法会在之前的样式表内容的基础上添加内容，常用于多个样式数据进行组合使用。</p>
			</div>
			<div id="resetStyles(BWidget*)">
				<h3>static void resetStyles(BWidget* widget = 0);</h3>
				<p>重置样式表。若widget是有效的控件，那么只对他的样式进行重置。重置动作会清除掉控件及其子控件的所有样式数据，并标记其样式以进行重新分配。若没有指定控件则重置全局样式表和所有控件的样式表。</p>
			</div>
			<div id="cleanTranslation(BWidget*)">
				<h3>static void cleanTranslation(BWidget* widget = 0);</h3>
				<p>清除所有文本相关资源，因为文本转换指定的目标文本可以是多语言的，所以通常认为是翻译资源。那么被清除的资源有*trans，*word，*text。</p>
			</div>
			<div id="setProperty(const char*, const BValue&)">
				<h3>static bool setProperty(const char* name, const BValue&amp; value);</h3>
				<p>设置全局属性值。此方法常用于在全局存放数据，以便任何对象在任何位置进行访问。</p>
			</div>
			<div id="property(const char*)">
				<h3>static const BValue&amp; property(const char* name);</h3>
				<p>获取全局属性值。</p>
			</div>
			<div id="setProperty(const BString&, const BValue&)">
				<h3>static bool setProperty(const BString&amp; name, const BValue&amp; value);</h3>
				<p>设置全局属性值。此方法常用于在全局存放数据，以便任何对象在任何位置进行访问。</p>
			</div>
			<div id="property(const BString&)">
				<h3>static const BValue&amp; property(const BString&amp; name);</h3>
				<p>获取全局属性值。</p>
			</div>
			<div id="socketCount()">
				<h3>static int socketCount();</h3>
				<p>获取当前程序中存在的套接字数量。</p>
			</div>
			<div id="socket(int)">
				<h3>static BSocket* socket(int index);</h3>
				<p>获取第index个套接字对象，此方法常用于管理所有通讯接口。</p>
			</div>
			<div id="sceneCount()">
				<h3>static int sceneCount();</h3>
				<p>取得当前程序中已经存在的场景对象的数量。</p>
			</div>
			<div id="scene(int)">
				<h3>static BScene* scene(int index);</h3>
				<p>取得第index个场景对象。</p>
			</div>
			<div id="movieCount()">
				<h3>static int movieCount();</h3>
				<p>取得动画对象的数量。</p>
			</div>
			<div id="movie(int)">
				<h3>static BMovie* movie(int index);</h3>
				<p>取得第index个动画对象。</p>
			</div>
			<div id="shortcutCount()">
				<h3>static int shortcutCount();</h3>
				<p>获取当前程序中已存在的快捷键对象的数量。</p>
			</div>
			<div id="shortcut(int)">
				<h3>static BShortcut* shortcut(int index);</h3>
				<p>取得第index个快捷键对象。</p>
			</div>
			<div id="threadCount()">
				<h3>static int threadCount();</h3>
				<p>程序中所有的线程数量。</p>
			</div>
			<div id="thread(int)">
				<h3>static BThread* thread(int index = 0);</h3><p>获得index索引位置的线程对象。当index为0时获得的是主线程。</p>
			</div>
			<div id="addFontPath(const BString&)">
				<h3>static void addFontPath(const BString&amp; fontPath);</h3>
				<p>添加一个字体文件搜索路径。字体搜索路径的优先级由高到低为：1、此处添加的路径。2、程序安装目录下的font文件夹。3、BWE库所在目录下的font文件夹。4、系统字体安装目录。</p>
			</div>
			<div id="removeFontPath(const BString&)">
				<h3>static void removeFontPath(const BString&amp; fontPath);</h3>
				<p>移除一个字体搜索路径。</p>
			</div>
			<div id="addPluginPath(const BString&)">
				<h3>static void addPluginPath(const BString&amp; pluginPath);</h3>
				<p>添加文件读写插件的搜索路径。读写插件的搜索路径优先级由高到低为：1、此处加入的路径。2、程序安装目录下的plugin文件夹。3、BWE库所在目录下的plugin文件夹。</p>
			</div>
			<div id="removePluginPath(const BString&)">
				<h3>static void removePluginPath(const BString&amp; pluginPath);</h3>
				<p>移除一个读写插件搜索路径。</p>
			</div>
			<div id="fontPathCount()">
				<h3>static int fontPathCount();</h3>
				<p>获得已经添加的字体文件搜索路径的数量。</p>
			</div>
			<div id="fontPath(int)">
				<h3>static const BString&amp; fontPath(int index);</h3>
				<p>获取第index个字体文件搜索路径。</p>
			</div>
			<div id="pluginPathCount()">
				<h3>static int pluginPathCount();</h3>
				<p>获得已经添加的插件搜索路径的数量。</p>
			</div>
			<div id="pluginPath(int)">
				<h3>static const BString&amp; pluginPath(int index);</h3>
				<p>获得第index个读写插件搜索路径。</p>
			</div>
			<div id="activeWindow()">
				<h3>static BWidget* activeWindow();</h3>
				<p>获得当前活跃的窗口，注意窗口就是根控件。所谓活跃是指此窗口或其子控件拥有输入焦点。</p>
			</div>
			<div id="hoveredWidget()">
				<h3>static BWidget* hoveredWidget();</h3>
				<p>获得当前被鼠标悬停的控件。</p>
			</div>
			<div id="focusedWidget()">
				<h3>static BWidget* focusedWidget();</h3>
				<p>获得当前拥有焦点的控件。</p>
			</div>
			<div id="activeModalWidget()">
				<h3>static BWidget* activeModalWidget();</h3>
				<p>获得当前活跃的模态控件，此控件垄断窗口交互事件。</p>
			</div>
			<div id="activePopupWidget()">
				<h3>static BWidget* activePopupWidget();</h3>
				<p>获得当前活跃的弹出控件。</p>
			</div>
			<div id="AutoWorkPath(const BString&)">
				<h3>inline AutoWorkPath(const BString&amp; path);</h3>
			</div>
			<div id="~AutoWorkPath()">
				<h3>inline ~AutoWorkPath();</h3>
			</div>
			<div id="failed() const">
				<h3>inline bool failed() const;</h3>
			</div>
		</div>
	</body>
</html>